package scantask.client.domainLayer;

import gov.nasa.worldwind.layers.AirspaceLayer;

import java.util.Map;
import java.util.Set;
import java.util.Vector;

import scantask.server.domainLayer.Exceptions.ControllerException;
import scantask.server.domainLayer.Exceptions.LoginException;

import scantask.containers.Area;
import scantask.containers.Benchmark;
import scantask.containers.Coordinate;
import scantask.containers.InformationObject;
import scantask.containers.WeekDate;
import scantask.containers.exceptions.InvalidCoordinateValueException;
import scantask.containers.exceptions.InvalidWeekNumberException;
import scantask.containers.exceptions.InvalidYearException;
import scantask.containers.exceptions.MissingLayerException;
import scantask.containers.exceptions.UnInitializeObjectException;

public interface ControllerInterface {
	
	public String getUserFullName() throws LoginException;
	
	public Vector<WeekDate> getValidDates() throws LoginException;
	
	public Set<String> getDataTypes() throws LoginException;
	
	public void addBenchmark(String locationName, double x, double y) throws InvalidCoordinateValueException, LoginException, ControllerException;
	
	public Vector<Benchmark> getBenchmarks() throws LoginException;
	
	public Vector<InformationObject> viewHistory(int year, int week) throws InvalidWeekNumberException, InvalidYearException, LoginException, ControllerException;
	
	public Coordinate getDefaultCoordinate() throws LoginException, UnInitializeObjectException;
	
	public void logout() throws LoginException;
	
	public void login(String userName, String password) throws ControllerException;
	
	public Vector<Area> getUserAreas() throws LoginException, UnInitializeObjectException;
	
	public void setPolygonesLayers(Map<String, AirspaceLayer> layers) throws LoginException, MissingLayerException;

}
